import openpyxl
from config.config import EXCEL_PATH  # 只导入需要的变量，避免*导入


def read_excel(file_path=EXCEL_PATH):
    workbook = openpyxl.load_workbook(file_path)
    data = []  # 最终结果列表
    current_case = None  # 用于临时存储当前处理的用例

    for worksheet in workbook.worksheets:
        # 获取表头（假设第二行为key行）
        keys = [cell.value for cell in worksheet[2]]
        # 遍历数据行（从第三行开始）
        for row in worksheet.iter_rows(min_row=3, values_only=True):
            dict_data = dict(zip(keys, row))

            if dict_data["id"] is not None:
                # 遇到新用例时：先处理上一个用例（如果存在）
                if current_case is not None:
                    # 上一个用例处理完毕，判断是否需要添加到结果
                    if current_case["is_true"]:
                        data.append(current_case)
                # 初始化新用例
                current_case = {
                    "id": dict_data["id"],
                    "feature": dict_data["feature"],
                    "story": dict_data["story"],
                    "title":dict_data["title"],
                    "steps": [
                        {
                            "step_num": dict_data["step_num"],
                            "step_name": dict_data["step_name"],
                            "keyword": dict_data["keyword"],
                            "by": dict_data["by"],
                            "value": dict_data["value"],
                            "data": dict_data["data"],
                            "index": dict_data["index"]
                        }
                    ],
                    "is_true": dict_data["is_true"]
                }
            else:
                # 处理当前用例的后续步骤
                if current_case is not None:  # 避免空指针
                    current_case["steps"].append({
                        "step_num": dict_data["step_num"],
                        "step_name": dict_data["step_name"],
                        "keyword": dict_data["keyword"],
                        "by": dict_data["by"],
                        "value": dict_data["value"],
                        "data": dict_data["data"],
                        "index": dict_data["index"]
                    })

        # 单个工作表处理完毕后，添加最后一个未处理的用例
        if current_case is not None:
            if current_case["is_true"]:
                data.append(current_case)
            current_case = None  # 重置，避免跨工作表污染

    workbook.close()
    return data
